package cn.wen.java.lang;

import java.text.MessageFormat;

import org.apache.commons.lang.StringUtils;

/**
 * Title：字符串操作类
 * <p>
 * Description：
 * <p>
 * Copyright：Copyright (c) 2010-2012
 * 
 * @author <a href="mailto:ct_wen@qq.com">ctwen</a>, 温承瑭
 * @version Revision：1.0 Date：2010/7/22 Description：初完成。
 *          <p>
 *          Revision：1.1 Date：2010/12/31 Description：新增isEmpty(String s, String... ss)方法。
 *          <p>
 *          Revision：1.2 Date：2011/1/25 Description：修订contains(String s, String chr)。
 * @see org.apache.commons.lang.xwork.StringUtils
 */
public abstract class HelperOfString {

    /**
     * 字符串是否为空
     * 
     * @param s 字符串
     * @return
     * @see org.apache.commons.lang.xwork.StringUtils#isEmpty
     */
    public static boolean isEmpty(String str) {
	return StringUtils.isEmpty(str);
    }

    /**
     * 字符串数组中所有字符串是否为空
     * 
     * @param ss 字符串数组
     * @return
     */
    public static boolean isEmpty(String[] ss) {
	int len = 0;
	for (String s : ss) {
	    len += isEmpty(s) ? 1 : 0;
	}
	return len == ss.length;
    }

    /**
     * 字符串是否为空，并且不相等于数组元素中其中一个字符串。
     * <p>
     * 如：s="-1" ss={"-1","0"}，s在ss中存在，则认为空。
     * 
     * @param s 字符串
     * @param ss 字符串数组
     * @return
     */
    public static boolean isEmpty(String[] ss, String s) {
	if (isEmpty(s)) return true;
	for (String str : ss) {
	    if (s.equals(str)) {
		// 若相等，则认为是空。
		return true;
	    }
	}
	return false;
    }

    /**
     * 创建一个具有给定模式的字符串，以参数与模式中的索引匹配后嵌入模式。
     * 
     * <pre>
     * 例一：format("你好，{0}. 你好，{1}", "中国", "世界"); == "你好，中国. 你好，世界";
     * 例二：format("您的余额为：{0, number, #,##0.##} 元", 159487); == "159,487";
     * 例三：format("今天是：{0, date, yyyy年MM月dd日},\t时间为：{0, time, HH时mm分ss秒}  . ",
     * 			new Date()); == "今天是：2011年02月20日,	时间为：19时51分22秒";
     * </pre>
     * 
     * @param pattern 模式字符串
     * @param arguments 占位符
     * @return 格式化后的字符串
     */
    public static String format(String pattern, Object... arguments) {
	return MessageFormat.format(pattern, arguments);
    }
}
